import wx


class Chinese2UnicodeFrame(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent, title=title, size=(800, 600))
        # 创建一个面板
        panel = wx.Panel(self)
        # 创建一个垂直盒子布局管理器
        vbox = wx.BoxSizer(wx.VERTICAL)
        # 将盒子布局管理器设置为面板的布局管理器
        panel.SetSizer(vbox)


        # 创建两个子盒子布局管理器，都是水平的
        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
        hbox2 = wx.BoxSizer(wx.HORIZONTAL)

        # hbox1中放置一个标签和一个单行文本输入框
        label1 = wx.StaticText(panel, label="中文：")
        self.text_ctrl1 = wx.TextCtrl(panel)

        # hbox2中放置一个标签和一个单行文本输入框
        label2 = wx.StaticText(panel, label="Unicode：")
        self.text_ctrl2 = wx.TextCtrl(panel)

        # 将标签和文本输入框添加到hbox1中
        hbox1.Add(label1, 0, wx.ALL | wx.CENTRE, 5)
        hbox1.Add(self.text_ctrl1, 1, wx.ALL | wx.EXPAND, 5)

        # 将标签和文本输入框添加到hbox2中
        hbox2.Add(label2, 0, wx.ALL | wx.CENTRE, 5)
        hbox2.Add(self.text_ctrl2, 1, wx.ALL | wx.EXPAND, 5)

        # 设置label1和label2一样宽
        label1.SetMinSize((60, -1))
        label2.SetMinSize((60, -1))

        # 将hbox1添加到vbox中
        vbox.Add(hbox1, 0, wx.ALL | wx.EXPAND, 5)
        # 将hbox2添加到vbox中
        vbox.Add(hbox2, 0, wx.ALL | wx.EXPAND, 5)

        # 创建一个按钮
        button = wx.Button(panel, label="转换")
        # 将按钮添加到hbox2中
        hbox2.Add(button, 0, wx.ALL | wx.CENTER, 5)

        # 给按钮绑定一个事件
        button.Bind(wx.EVT_BUTTON, self.on_button_click)

    # 定义一个事件处理函数 on_button_click
    def on_button_click(self, event):
        # 获取文本输入框中的内容
        text = self.text_ctrl1.GetValue()
        # 将中文转换为Unicode
        unicode = text.encode("unicode_escape")
        # 将Unicode转换为字符串
        # unicode = unicode.decode("utf-8")
        # 将Unicode转换为中文
        # unicode = unicode.replace("\\u", "&#x")
        # 将中文转换为Unicode
        # unicode = unicode.replace(";", ";")
        # # 将Unicode转换为字符串
        # unicode = unicode.encode("utf-8")
        # # 将Unicode转换为中文
        # unicode = unicode.decode("unicode_escape")
        # # 将Unicode转换为字符串
        # unicode = unicode.decode("utf-8")
        # # 将Unicode转换为中文
        # unicode = unicode.replace("&#x", "\\u")
        # # 将Unicode转换为字符串
        # unicode = unicode.encode("utf-8")
        # 将Unicode设置到文本输入框中
        self.text_ctrl2.SetValue(unicode)


if __name__ == '__main__':
    app = wx.App()
    frame = Chinese2UnicodeFrame(None, title="中文转Unicode")
    frame.Show()
    app.MainLoop()